1. Wat is de licentie van FPDF? Zijn er restricties voor het gebruik?
FPDF is Freeware (dit is in het begin van het bronbestand vermeld). Er is geen restrictie voor het gebruik. U mag het gratis in Uw toepassing invoegen (commercieel of niet), met of zonder aanpassingen.2. Wanneer ik een PDF probeer aan te maken, krijg ik veel rare tekens op mijn beeldscherm. Waarom?
Deze 'rare' tekens zijn in feite de actuele inhoud van het PDF document. Dit gedrag is een fout van IE. Wanneer het eerst een HTML pagina ontvangt en daarna een PDF van hetzelde adres, toont het deze direct zonder eerst Acrobat op te starten. Dit gebeurt vaker als U een document aan het ontwekpen bent: Bij het kleinste fout in het script wordt een HTML pagina verzonden, en na wijziging komt de PDF aan.3. Ik probeer een PDF te genereren en IE geeft een lege pagina. Wat gebeurt er?
Ten eerste, kijk of U niets meer naar de browser stuurt na de PDF (niet eens een spatie of een enter). Je kan een exit statement ( ?> ) na de aanroep naar de Output() methode om zeker te zijn.| <INPUT TYPE="HIDDEN" NAME="ext" VALUE=".pdf"> |
|
//Bepaal de naam van het tijdelijke bestand in de huidige directory $file=basename(tempnam(getcwd(),'tmp')); //Sla het PDF document op in een bestand $pdf->Output($file); //JavaScript redirect echo "<HTML><SCRIPT>document.location='getpdf.php?f=$file';</SCRIPT></HTML>"; |
|
<?php $f=$HTTP_GET_VARS['f']; //Kijk het bestand na (niet overslaan!) if(substr($f,0,3)!='tmp' or strpos($f,'/') or strpos($f,'\\')) die('Bestandsnaam niet correct'); if(!file_exists($f)) die('Bestand bestaat niet'); //Behandel speciale IE aanvragen wanneer nodig if($HTTP_SERVER_VARS['HTTP_USER_AGENT']=='contype') { Header('Content-Type: application/pdf'); exit; } //Output PDF Header('Content-Type: application/pdf'); Header('Content-Length: '.filesize($f)); readfile($f); //Verwijder bestand unlink($f); exit; ?> |
|
//Bepaal de naam van het tijdelijke bestand in de huidige directory $file=basename(tempnam(getcwd(),'tmp')); rename($file,$file.'.pdf'); $file.='.pdf'; //Sla het PDF document op in een bestand $pdf->Output($file); //JavaScript redirect echo "<HTML><SCRIPT>document.location='$file';</SCRIPT></HTML>"; |
|
function CleanFiles($dir) { //Verwijder tijdelijk bestanden $t=time(); $h=opendir($dir); while($file=readdir($h)) { if(substr($file,0,3)=='tmp' and substr($file,-4)=='.pdf') { $path=$dir.'/'.$file; if($t-filemtime($path)>3600) @unlink($path); } } closedir($h); } |
4. Ik stuur parameters en ik gebruik de POST methode, maar de waardes verschijnen niet in het PDF document.
Het probleem komt voor in enkele versies van IE (vooral de eerste 5.5). Zie de vorige vraag voor een manier om het probleem te verhelpen.5. Wanneer ik een PHP sessie gebruik, geeft IE mijn PDF document niet meer weer maar vraagt mij het te downloaden.
Het is een probleem wat in sommige versies van IE voor komt. Om het te verhelpen, voegt U de volgende regel toe voor session_start():| session_cache_limiter('private'); |
6. Als ik op SSL ben, kan IE het PDF document niet openen.
Het probleem kan worden opgelost door de volgende regel toe te voegen:| Header('Pragma: public'); |
7. Als ik een script uitvoer krijg ik de melding: "FPDF error: Don't alter the locale before including class file".
Wanneer de decimalen scheider is ingesteld als een komma voor het invoegen van een bestand, is er een Fout in PHP en decimale nummers worden afgekapt. Hierom wordt het afgeraden om setlocale() in te stellen voor het invoegen van de class. Op Unix wordt het afgeraden de LC_ALL omgeving variabele in te stellen, omdat het gelijkwaardig is aan de setlocale() aanroep.8. Ik probeer een PNG afbeelding in te voegen en Acrobat zegt: "There was an error processing a page. A drawing error occurred".
Acrobat 5 heeft een fout en kan geen transparante zwartwit afbeeldingen weergeven (bijvoorbeeld met 1 bit per pixel). Verwijder de transparantheid en sla uw afbeelding op in 16 kleuren (4 bits per pixel) of meer.9. Ik kom de volgende fout tegen wanneer ik probeer een PDF document te genereren: "Warning: Cannot add header information - headers already sent by (output started at script.php:X)"
U moet niets naar de browser sturen behalve de PDF zelf: geen HTML, geen spaties, geen enters, niet ervoor noch erachter. Het script stuurt iets naar de browser op regel X.10. Ik probeer een variabele in de Header() methode weer te geven maar er verschijnt niets.
U moet het global keyword gebruiken, bijvoorbeeld:|
function Header() { global $title; $this->SetFont('Arial','B',15); $this->Cell(0,10,$title,1,1,'C'); } |
11. Ik heb de Header() en Footer() methodes in mijn PDF class maar er verschijnt niets.
U moet een object aanmaken vanaf de PDF class, niet FPDF:| $pdf=new PDF(); |
12. Het lukt niet om line breaks te laten werken. Ik heb \n in de string ingevoegd en geprint met Multicell() maar het werkt niet.
U moet Uw string omvatten met dubbele aanhalingstekens, niet met enkele.13. Ik probeer het euro symbool in te voegen maar dit werkt niet.
De standaard lettertypes hebben het euro teken op positie 128. U kunt een constante definiëren zoals dit voor het gemak:| define('EURO',chr(128)); |
14. Ik teken een frame met zeer precieze afmetingen, maar wanneer ik het afgedrukt heb zie ik enkele afwijkingen.
Om afmetingen aan te houden, kunt U de optie "Aanpassen aan pagina" uitschakelen in het printer dialoog scherm.15. Ik wil de hele oppervlakte van het papier gebruiken, maar als ik print heb ik altijd een kleine marge. Hoe kan ik hier van af komen?
Alle printers hebben physieke marges (afhankelijk van het model), het is daarom onmogelijk om deze te verwijderen en het gehele papier te beprinten.16. Wat is de limiet van de bestanden die ik kan genereren met FPDF?
Er is geen bepaalde limiet. Er zijn echter enkele beperkingen:17. Kan ik een PDF document wijzigen met FPDF?
Nee.18. Ik wil een zoekmachine maken in PHP en PDF bestanden indexeren. Kan ik dit doen met FPDF?
Nee. Maar een GPL C programma bestaat, pdftotext, wat de tekstuele inhoud uit het document kan filteren. Het wordt geleverd met het Xpdf pakket:19. Kan ik een HTMl pagina naar PDF converteren met FPDF?
Nee. Maar een GPL C programma bestaat, htmldoc, wat deze taak uitvoert en goede resultaten geeft:20. Kan ik PDF bestanden aaneenschakelen met FPDF?
Nee. Maar een gratis C programma bestaat voor deze taak: